package com.czxy.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.HashMap;
import java.util.Map;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Cart {


    //购物车项集合 商品Id 作为Key 购物车项作为value
    private Map<String,CartItem> map = new HashMap<>();

    //商品总金额
    private  Double  totalMoney;


    //计算总金额
    public Double getTotalMoney() {

        //总金额 等于 每个购物车项中的  小计之和
        totalMoney = 0.0;

        for (Map.Entry<String, CartItem> entry : map.entrySet()) {
            CartItem cartItem = entry.getValue();
            totalMoney+=cartItem.getSubTotal();

        }
        
        return totalMoney;
    }

    //添加购物车项
    public  void  addCartItem(Product product, int count){

        //通过商品的pid 获取购物车项  对象 cartItem
        CartItem cartItem = map.get(product.getPid());


        if (cartItem == null){

            //如果cartItem为空 表示第一次把该商品添加到购物车中
            //生成购物车项 然后添加到 集合中

            cartItem = new CartItem();
            cartItem.setProduct(product);
            cartItem.setCount(count);

            map.put(product.getPid(),cartItem);

        }else{
            //如果cartItem不为空 表示该商品已经添加过
            //集合中已经存在该商品 只需要更改购物车项的数量即可
            cartItem.setCount(cartItem.getCount()+count);
        }


    }

    //删除购物车项

    public  void  deleteByPid(String pid){

        map.remove(pid);
    }

    //清空购物车项
    public  void clear(){
        //清空map集合
        map.clear();
        //总金额设置为 0
        totalMoney = 0.0;
    }








}
